home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 1: Comms & Networking
/
Almathera Ten on Ten - Disc 1: Comms & Networking.iso
/
tools
/
archie
/
archie-1.4
/
ptalloc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-05-01
|
2KB
|
95 lines
/*
* Copyright (c) 1989, 1990, 1991 by the University of Washington
*
* For copying and distribution information, please see the file
* <copyright.h>.
*/
/* Amiga port by Tomas Willis (tomas@cae.wisc.edu) January 1995 */
#include <stdio.h>
#include "pfs.h"
#include "pmachine.h" /* for correct definition of ZERO */
#ifdef MSDOS
# define free _pfree /* otherwise we get conflicts with free() */
#endif
#ifdef AMIGA
# define free _pfree /* otherwise we get conflicts with free() */
#endif
static PTEXT free = NULL;
int ptext_count = 0;
int ptext_max = 0;
//protos
PTEXT ptalloc(void);
void ptfree(PTEXT vt);
void ptlfree(PTEXT vt);
/*
* ptalloc - allocate and initialize ptext structure
*
* PTALLOC returns a pointer to an initialized structure of type
* PTEXT. If it is unable to allocate such a structure, it
* returns NULL.
*/
PTEXT
ptalloc(void)
{
PTEXT vt;
if(free) {
vt = free;
free = free->next;
}
else {
vt = (PTEXT) malloc(sizeof(PTEXT_ST));
if (!vt) return(NULL);
ptext_max++;
}
ptext_count++;
/* nearly all parts are 0 [or NULL] */
ZERO(vt);
/* The offset is to leave room for additional headers */
vt->start = vt->dat + MAX_PTXT_HDR;
return(vt);
}
/*
* ptfree - free a VTEXT structure
*
* VTFREE takes a pointer to a VTEXT structure and adds it to
* the free list for later reuse.
*/
void
ptfree(PTEXT vt)
// PTEXT vt;
{
vt->next = free;
vt->previous = NULL;
free = vt;
ptext_count--;
}
/*
* ptlfree - free a VTEXT structure
*
* VTLFREE takes a pointer to a VTEXT structure frees it and any linked
* VTEXT structures. It is used to free an entrie list of VTEXT
* structures.
*/
void
ptlfree(PTEXT vt)
// PTEXT vt;
{
PTEXT nxt;
while(vt != NULL) {
nxt = vt->next;
ptfree(vt);
vt = nxt;
}
}